
package app;

/**
 * Klasa definiująca właściwości obiektu poruszającego się po trasie.
 * @author morohusky
 */
public class SpriteStats {
    private double _topSpeed = 0d;
    private double _maxReverseSpeed = 0d;
    private double _rotationStep = 0d;
    private double _breaks = 0d;
    private double _acceleration = 0d;
    private double _freeSlowDown = 0d;
    private double _rotation = 0d;
    
    
    /**
     * Tworzy obiekt posiadający podane właściwości
     * @param topSpeed Prędkość maksymalna
     * @param maxReverseSpeed Maksymalna prędkość do tyłu
     * @param rotationStep Moc skręcania
     * @param breaks Moc hamulców
     * @param acceleration Przyspieszenie
     * @param freeSlowDown Zwalnianie na luzie
     */
    public SpriteStats(double topSpeed, double maxReverseSpeed, double rotationStep, double breaks, double acceleration, double freeSlowDown) {
        _topSpeed = topSpeed;
        _maxReverseSpeed = maxReverseSpeed;
        _rotationStep = rotationStep;
        _breaks = breaks;
        _acceleration = acceleration;
        _freeSlowDown = freeSlowDown;
        
        if (_topSpeed != 0d) {
            _rotation = _rotationStep / _topSpeed;
        }
    }
    
    
    /**
     * "Getter" prędkości maksymalnej
     * @return Prędkość maksymalna
     */
    public double getTopSpeed() {
        return _topSpeed;
    }
    
    /**
     * "Getter" maksymalnej prędkości do tyłu
     * @return Maksymalna prędkość do tyłu
     */
    public double getMaxReverseSpeed() {
        return _maxReverseSpeed;
    }
    
    /**
     * "Getter" mocy skręcania
     * @return Moc skręcania
     */
    public double getRotationStep() {
        return _rotationStep;
    }
    
    /**
     * "Getter" mocy hamowania
     * @return Moc hamowania
     */
    public double getBreaks() {
        return _breaks;
    }
    
    /**
     * "Getter" przyspieszenia
     * @return Przyspieszenie
     */
    public double getAcceleration() {
        return _acceleration;
    }
    
    /**
     * "Getter" mocy zwalniania na luzie
     * @return Moc zwalniania na luzie
     */
    public double getFreeSlowDown() {
        return _freeSlowDown;
    }
    
    /**
     * "Getter" maksymalnego obrotu
     * @return Maksymalny obrót obiektu
     */
    public double getRotation() {
        return _rotation;
    }
}
